#include "ChatServer.h"
//发送来自myfriend的消息
bool inalluser(string myfriend)
{
for(auto c:alluser)
if(c.first==myfriend)
return 1;
return 0;
}

void dealchat(int connfd,string user)
{
string command,myfriend,sbuff;
pair<string,string> message;
while(1)
{
cout<<"select"<<endl;
command=dealdata(connfd);
if(command=="select")
while(1){
write(connfd,alluser[user].getfriend().c_str(),alluser[user].getfriend().size());
myfriend=dealdata(connfd);
if(myfriend=="back") 
{
sbuff="back";       //接到消息，请发下一个
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
break;}
if(alluser[user].isfriend(myfriend))
{
cout<<"chat with friend"<<endl;
sbuff="ok";
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
while(1)
{
//服务器维护每个用户的未读消息列表
//发送来自myfrienda所有未读消息
//清空来自myfriend的消息列表
//接收消息，更新好友myfriend的消息列表
alluser[user].sent(connfd,myfriend);
alluser[user].clean(myfriend);
message.first=dealdata(connfd);
cout<<message.second<<endl;
sbuff="ok";       //接到消息，请发下一个
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
message.second=dealdata(connfd);
cout<<message.first<<endl;
sbuff="ok";       //接到消息，请发下一个
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
//更新好友消息列表
alluser[myfriend].addmessage(user,message);
}
}
else {
cout<<"is not friend"<<endl;
sbuff="error";
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
}}
else if(command=="add")
{
sbuff="ok";       //接到消息，请发下一个
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
cout<<"addddd"<<endl;
myfriend=dealdata(connfd);
if(inalluser(myfriend))
{
alluser[user].addfriend(myfriend);
alluser[myfriend].addfriend(user);
sbuff="ok";       //添加成功
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));}
else 
{
sbuff="error";       //用户不存在
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));}
}
else if(command=="back") 
{sbuff="ok";       //接到消息，请发下一个
write(connfd,sbuff.c_str(),sizeof(sbuff.c_str()));
}
else break;
}}
/*
}
else if(command=="add")



}*/
